#include "uart.c"

/**
 * 屏幕循环输出一个数字。
 * 实现两个按键，按键1按下，将屏幕输出的数字-1
 * 按键2按下，将屏幕输出的数字+1
 *
 * 实现按键持续按下的效果，如果持续按下，屏幕每次输出3次数字后，数字变化
 */

void delay_ms(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 123; j++)
            ;
    }
}

sbit BTN_ADD = P2 ^ 0;
sbit BTN_SUB = P2 ^ 1;

int num = 0;
unsigned int counter = 0;
#define COUNTER_MAX 3

void main()
{
    uart_init();
    while (1)
    {
        if (BTN_ADD == 0)
        {
            if (counter >= COUNTER_MAX)
            {
                num++;
                counter = 0;
            }
            else
            {
                counter++;
                printf("num=%d\n", num);
                delay_ms(500);
            }
        }
        else if (BTN_SUB == 0)
        {
            if (counter >= COUNTER_MAX)
            {
                num--;
                counter = 0;
            }
            else
            {
                counter++;
                printf("num=%d\n", num);
                delay_ms(500);
            }
        }
        else
        {
            // 当按键抬起的时候，赋值较大的值，让按键按下一次立即生效
            counter = COUNTER_MAX + 1;
        }
    }
}